#10-1 Python学习笔记 学 ：在文本编辑器中新建一个文件，写几句话来总结一下你至此学到的Python知识，其中每一行都以“In Python you can”打头。
# 将这个文件命名为 learning_python.txt，并将其存储到为完成本章练习而编写的程序所在的目录中。
# 编写一个程序，它读取这个文件，并将你所写的内容打印三次：第一次打印时读取整个 文件；第二次打印时遍历文件对象；
# 第三次打印时将各行存储在一个列表中，再在with 代码块外打印它们。
with open('learning_python.txt.py') as file_object:
    contents = file_object.read()
    print(contents)

filename = 'learning_python.txt.py'
with open(filename) as file_object:
    contents = file_object.read()
    print(contents)
#10-2 C语言学习笔记 语 ：可使用方法replace() 将字符串中的特定单词都替换为另一个单词。
contents=''
with open("learning_python.txt.py") as file_object:
	lines=file_object.readlines()
for line in lines:
	line=line.replace('python','C')
	print(line.rstrip())
#10-3 访客访 ：编写一个程序，提示用户输入其名字；用户作出响应后，
# 将其名字写入到文件guest.txt中。
name = input("请输入你的名字 :")
file_name = 'guest.txt'
with open(file_name,'a') as file_object:
    file_object.write(name+"\n")
with open(file_name) as need_read:
    line = need_read.readlines()
#10-4 访客名单 访 ：编写一个while 循环，提示用户输入其名字。用户输入其名字后，在屏幕上打印一句问候语，
# 并将一条访问记录添加到文件guest_book.txt中。确保这 个文件中的每条记录都独占一行。
file_name = 'guest.txt'
while(True):
    name = input("请输入你的名字:")
    if name != 'quit':
        with open(file_name,'a') as file_object:
            file_object.write(name+"\n")
    else:
        break


#10-5 关于编程的调查 关 ：编写一个while 循环，询问用户为何喜欢编程。每当用户输入一个原因后，都将其添加到一个存储所有原因的文件中
file_name='guest.txt'
while(True):
	reason=input("Why you love programming ? ")
	if reason!='quit':
		with open(file_name,'a') as file_object:
			file_object.write(reason+'\n')
	else:
		break

with open(file_name) as need_r:
	lines=need_r.readlines()
for line in lines:
	print(line.rstrip())

#10-6 加法运算 加 ：提示用户提供数值输入时，常出现的一个问题是，用户提供的是文本而不是数字。在这种情况下，当你尝试将输入转换为整数时，
# 将引 发TypeError 异常。编写一个程序，提示用户输入两个数字，再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获TypeError 异常，并打印一
#条友好的错误消息。对你编写的程序进行测试：先输入两个数字，再输入一些文本而不是数字
try:
    t1 = input("请输入第一个数字")
    x =int(t1)

    t2 = input("请输入第二个数字")
    y = int(t2)
except ValueError:
    print("你输入的不是数字")
else:
    print(x+y)

#10-7 加法计算器 加 ：将你为完成练习10-6而编写的代码放在一个while 循环中，让用户犯错（输入的是文本而不是数字）后能够继续输入数字。
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while   True:
    try:
        t1 = input("请输入第一个数字")
        if t1=='q':
              break
              x = int(t1)
              t2 = input("请输入第二个数字")
              if t2=='q':
                  break
                  y = int(t2)
    except ValueError:
        print("你输入的不是数字")
    else:
        print(x+y)

#10-8 猫和狗 猫 ：创建两个文件cats.txt和dogs.txt，在第一个文件中至少存储三只猫的名字，在第二个文件中至少存储三条狗的名字。编写一个程序，尝试读取这些文件， 并将其内容打印到屏幕上。将这些代码放在一个try-except 代码块中，
# 以便在文件不存在时捕获FileNotFound 错误，并打印一条友好的消息。将其中一个文件 移到另一个地方，并确认except 代码块中的代码将正确地执行。
t = 'dogs.txt'
try:
    with open(t) as t1:
        contents = t1.read()
except FileNotFoundError:
	print("这是不对的")
else:
		print(contents)

#10-9 沉默的猫和狗 沉 ：修改你在练习10-8中编写的except 代码块，让程序在文件不存在时一言不发。
t = 'dogs.txt'
try:
    with open(t) as t1:
        contents = t1.read()
except FileNotFoundError:
	pass
else:
		print(contents)
#10-10 常见单词 常 ：访问项目Gutenberg（http://gutenberg.org/ ），并找一些你想分析的图书。下载这些作品的文本文件或将浏览器中的原始文本复制到文本文件中。
# 你可以使用方法count() 来确定特定的单词或短语在字符串中出现了多少次。
try:
    with open('t.txt') as t:
        contents=f.read()
except FileNotFoundError:
	print("对不起，有错误")
else:
    t1 = contents.loeer().count('the')
    print(t1)


#10-11 喜欢的数字 喜 ：编写一个程序，提示用户输入他喜欢的数字，并使用json.dump() 将这个数字存储到文件中。
# 再编写一个程序，从文件中读取这个值，并打印 消息“I knowyour favorite number! It's _____.”。
import json
number = input("输入你最喜欢的数字:")
file_name = "t.json"
with open(file_name) as t1:
    json.dump(number,t)
with open(file_name) as t1:
    num = json.load(t1)
    print("最喜欢的数字是:" + num +"!")


#10-12 记住喜欢的数字 记 ：将练习10-11中的两个程序合而为一。
# 如果存储了用户喜欢的数字，就向用户显示它，否则提示用户输入他喜欢的数字并将其存储到文件中。
# 运行这个程序两次，看看它是否像预期的那样工作。
import json

def t():
	file_name="favnum.json"
	try:
		with open(file_name) as f:
			num=json.load(f)
	except FileNotFoundError:
		return None
	else:
		return num
def print_favnum():
	num=t()
	if num:
		print("I know your favorite number! It's "+num+".")
	else:
		file_name="favnum.json"
		num=input("Enter your favorite number: ")
		with open(file_name,'w') as f:
			json.dump(num,f)
print_favnum()

